﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Globalization;
using Telerik.Web.UI;
using KPIS.GERP.GHRMS.BLL;
using KPIS.GERP.GHRMS.IBLL;
using KPIS.GERP.GHRMS.MODEL;


namespace KPIS.GERP.GHRMS.APP.App_UI.UserControls
{
    public partial class RC_PlacementBySelect : System.Web.UI.UserControl
    {
        private SsMng ssMng = new SsMng();
        private IJobSiteBLL jsBLL = new JobSiteBLL();
        private IMovmentBLL movBLL = new MovmentBLL();
        private object _dataItem = null;

        protected bool IsUserControlPostBack
        {
            get
            {
                return this.ViewState["IsUserControlPostBack"] != null;
            }
        }
        public object DataItem
        {
            get
            {
                return this._dataItem;
            }
            set
            {
                this._dataItem = value;
            }
        }

        protected override void OnLoad(System.EventArgs e)
        {
            base.OnLoad(e);

            txtSalary.Attributes.Add("onkeypress", "return isNumberKey(event)");

            if (!IsUserControlPostBack)
            {                         
                this.ViewState.Add("IsUserControlPostBack", true);
            }

            if (DataItem != null)
            {
                bindMovmentCombo();
                bindPosTypeCombo();                
                bindJobSiteCombo();      

                if (!(DataItem is Telerik.Web.UI.GridInsertionObject))
                {
                    btnFindTempEmployee.Visible = false;

                    lblCmdAddSeq.Text = DataBinder.Eval(DataItem, "cmd_add_seq").ToString();
                    lblTmpEmpSeq.Text = DataBinder.Eval(DataItem, "tmp_emp_seq").ToString();

                    RC_TransferBLL obj = new RC_TransferBLL();
                    DataTable dt;
                    dt = obj.SelectTmpEmpByID(int.Parse(lblTmpEmpSeq.Text));
                    
                    //// ชื่อ  สกุล  //////
                    txttempEmployee.Text = dt.Rows[0]["full_name"].ToString();
                    lblBirthDate.Text =   ((DateTime)dt.Rows[0]["birth_date"]).ToString("dd/MM/yyyy",new CultureInfo("th-TH") );
                    lblCitizen.Text = dt.Rows[0]["citizen"].ToString();
                    movmentCombo.SelectedValue = DataBinder.Eval(DataItem, "move_seq").ToString();

                    //  วุฒิการศึกษา //////////
                    bindTmpEducateCombo();
                    cmbTmpEdu.SelectedValue = DataBinder.Eval(DataItem, "tmp_edu_seq").ToString();   

                   txttempEmployee.Text =   DataBinder.Eval(DataItem, "full_name").ToString();    

                   txtPosition.Text = DataBinder.Eval(DataItem, "pos_name").ToString();
                   txtPosRef.Text = DataBinder.Eval(DataItem, "pos_ref_no").ToString();
             
                   posTypeCombo.SelectedValue = DataBinder.Eval(DataItem, "pos_type_seq").ToString();
                   bindClasscombo();
                   classCombo.SelectedValue = DataBinder.Eval(DataItem, "class_seq").ToString();
                   jobSiteCombo.SelectedValue = DataBinder.Eval(DataItem, "job_site_seq").ToString();
                   txtSalary.Text = DataBinder.Eval(DataItem, "salary", "{0:N0}").ToString();
                   txtRemarks.Text = DataBinder.Eval(DataItem, "remarks").ToString();
                   txtStartDate.SetValue(DataBinder.Eval(DataItem, "start_date", "{0:dd/MM/yyy}").ToString());  
                }
            }
        }

        private void bindClasscombo()
        {
            IClassBLL cBLL = new ClassBLL();
            IList<ClassInfo> infoList = cBLL.ListClasses(posTypeCombo.SelectedValue);

            classCombo.DataSource = infoList;
            classCombo.DataBind();
        }

        private void bindJobSiteCombo()
        {
            IList<JobSiteInfo> infoList = jsBLL.ListJobSiteByTypes(SystemInfo._JobsiteExternal);

            jobSiteCombo.DataSource = infoList;
            jobSiteCombo.DataBind();
        }

        private void bindMovmentCombo()
        {
            IList<MovmentInfo> infoList = movBLL.ListMovments(Session["EMPTYPE"].ToString());

            movmentCombo.DataSource = infoList;
            movmentCombo.DataBind();
        }     

        private void bindPosTypeCombo()
        {
            IPositionTypeBLL ptBLL = new PositionTypeBLL();
            IList<PositionTypeInfo> infoList = ptBLL.ListPositionTypes(Convert.ToInt32(Session["EMPTYPE"].ToString()));

            posTypeCombo.DataSource = infoList;
            posTypeCombo.DataBind();
        }
        private void bindTmpEducateCombo()
        {
            RecruitNewEmployeeBLL empBLL = new RecruitNewEmployeeBLL();
            DataTable dataTable = new DataTable();

            dataTable = empBLL.SelectTmpEducation(int.Parse(lblTmpEmpSeq.Text));

            foreach (DataRow dataRow in dataTable.Rows)
            {
                RadComboBoxItem item = new RadComboBoxItem();

                item.Text = (string)dataRow["edu_qual_name"] 
                        + " สาขาวิชา"
                        + (string)dataRow["edu_major_name"]
                        + " "
                        + (string)dataRow["edu_ins_name"];
                item.Value = dataRow["tmp_edu_seq"].ToString();

                item.Attributes.Add("degree", (string)dataRow["edu_degree_name"]);
                item.Attributes.Add("qualification", (string)dataRow["edu_qual_name"]);
                item.Attributes.Add("major", (string)dataRow["edu_major_name"]);
                item.Attributes.Add("institutes", (string)dataRow["edu_ins_name"]);

                cmbTmpEdu.Items.Add(item);

                item.DataBind();
            }
        }   
        protected void btnAddnew_Click(object sender, EventArgs e)
        {
            string  start_date;//ตั้งแต่วันที่
            int cmd_seq,tmp_emp_seq,emp_seq,pos_seq;//รหัสคำสั่ง,รหัส tmp บุคลากร,รหัสตำแหน่ง
            string pos_ref_no,pos_name;//เลขที่ตำแหน่ง,ชื่อตำแหน่ง
            int class_seq,job_site_seq;//รหัสระดับ,รหัสหน่วยงาน
            string job_site_name;//ชื่อหน่วยงาน

            int tmp_edu_seq;// seq วุฒิการศึกษาที่บรรจุ
            string ent_no,ent_pos_name;//สอบแข่งขันได้ลำดับที่,ตำแหน่งที่สอบแข่งขันได้
            int ent_pos_type_seq, ent_class_seq;//ประภทตำแหน่งที่สอบแข่งขันได้,ระดับตำแหน่งที่สอบแข่งขันได้
            string ent_job_site_name,ent_date;//ตามประกาศผลสอบของ,ลงวันที่

            int old_pos_type_seq,old_class_seq; //ประเภทตำแหน่งเดิม,ระดับตำแหน่งเดิม
            string old_job_site_name, old_pos_name;//สังกัดเดิม,ตำแหน่งเดิม
            double old_salary,salary; //เงินเดือนเดิม ,เงินเดือน
                        
            int move_seq,pos_type_seq;//ประเภทการเคลื่อนไหว,ตำแหน่งประเภท
            string remarks;//หมายเหตุ

            cmd_seq = int.Parse(Session["CMD"].ToString());  
            move_seq = int.Parse(movmentCombo.SelectedValue);  

            // วุฒิการศึกษา
            tmp_edu_seq = int.Parse(cmbTmpEdu.SelectedValue);
            salary = Convert.ToDouble(txtSalary.Text);  
                        
            //ตำแหน่งและส่วนราชการที่รับโอน

            pos_name = txtPosition.Text;
            pos_ref_no = txtPosRef.Text;
            class_seq = int.Parse(classCombo.SelectedValue);
            job_site_seq = int.Parse(jobSiteCombo.SelectedValue);
            job_site_name = jobSiteCombo.Text;
            start_date = txtStartDate.GetStringValue();
            remarks = txtRemarks.Text;
            pos_type_seq = int.Parse(posTypeCombo.SelectedValue);

            RC_PlacementBySelectBLL obj = new RC_PlacementBySelectBLL();

            obj.insert(cmd_seq, int.Parse(lblTmpEmpSeq.Text), move_seq, tmp_edu_seq, salary, pos_name
                , pos_ref_no, class_seq, job_site_seq, job_site_name, start_date,pos_type_seq
                , remarks, ssMng.EmpSeqI);
        }

        protected void btnCancel_Click(object sender, EventArgs e)
        {

        }

        protected void btnUpdate_Click(object sender, EventArgs e)
        {
            string start_date;//ตั้งแต่วันที่
            int cmd_seq, tmp_emp_seq, emp_seq, pos_seq;//รหัสคำสั่ง,รหัส tmp บุคลากร,รหัสตำแหน่ง
            string pos_ref_no, pos_name;//เลขที่ตำแหน่ง,ชื่อตำแหน่ง
            int class_seq, job_site_seq;//รหัสระดับ,รหัสหน่วยงาน
            string job_site_name;//ชื่อหน่วยงาน

            int tmp_edu_seq;// seq วุฒิการศึกษาที่บรรจุ
            string ent_no, ent_pos_name;//สอบแข่งขันได้ลำดับที่,ตำแหน่งที่สอบแข่งขันได้
            int ent_pos_type_seq, ent_class_seq;//ประภทตำแหน่งที่สอบแข่งขันได้,ระดับตำแหน่งที่สอบแข่งขันได้
            string ent_job_site_name, ent_date;//ตามประกาศผลสอบของ,ลงวันที่

            int old_pos_type_seq, old_class_seq; //ประเภทตำแหน่งเดิม,ระดับตำแหน่งเดิม
            string old_job_site_name, old_pos_name;//สังกัดเดิม,ตำแหน่งเดิม
            double old_salary, salary; //เงินเดือนเดิม ,เงินเดือน

            int move_seq, pos_type_seq;//ประเภทการเคลื่อนไหว,ตำแหน่งประเภท
            string remarks;//หมายเหตุ

            move_seq = int.Parse(movmentCombo.SelectedValue);

            // วุฒิการศึกษา
            tmp_edu_seq = int.Parse(cmbTmpEdu.SelectedValue);      
            salary = Convert.ToDouble(txtSalary.Text);

            //ตำแหน่งและส่วนราชการที่รับโอน 

            pos_name = txtPosition.Text;
            pos_ref_no = txtPosRef.Text;
            class_seq = int.Parse(classCombo.SelectedValue);
            job_site_seq = int.Parse(jobSiteCombo.SelectedValue);
            job_site_name = jobSiteCombo.Text;
            start_date = txtStartDate.GetStringValue();
            remarks = txtRemarks.Text;
            pos_type_seq = int.Parse(posTypeCombo.SelectedValue);

            RC_PlacementBySelectBLL obj = new RC_PlacementBySelectBLL();
            obj.Update(int.Parse(lblCmdAddSeq.Text), move_seq, tmp_edu_seq,salary, pos_name, pos_ref_no
                , class_seq, job_site_seq, job_site_name, start_date,
                pos_type_seq, remarks, ssMng.EmpSeqI);     

        }

        protected void posTypeCombo_SelectedIndexChanged(object o, Telerik.Web.UI.RadComboBoxSelectedIndexChangedEventArgs e)
        {
            bindClasscombo();
        }

        protected void classCombo_SelectedIndexChanged(object o, Telerik.Web.UI.RadComboBoxSelectedIndexChangedEventArgs e)
        {

        }

        protected void btnFindTempEmployee_Load(object sender, EventArgs e)
        {
            if (DataItem is Telerik.Web.UI.GridInsertionObject)
            {
                btnFindTempEmployee.Attributes.Add("OnClick", "LinkMDdetail(" + HideTempEmployee.ClientID + "," + "'Forms/DialogRC_TmpEmp.aspx','../frmIframe.html',700,500)");
            }
        }

        protected void btnFindTempEmployee_Click(object sender, ImageClickEventArgs e)
        {            
            txttempEmployee.Text = "";
            lblBirthDate.Text = "";
            lblCitizen.Text = "";            
            
            string st = HideTempEmployee.Value;
            if (st == "")
                return;
            
            lblTmpEmpSeq.Text = st;

            RecruitNewEmployeeBLL obj = new RecruitNewEmployeeBLL();

            DataRowCollection dr;
            dr = obj.SelectTmpEmployee(Int32.Parse(st), (int?)null, (int?)null).Rows;
            if (dr.Count > 0)
            {
                txttempEmployee.Text = dr[0]["full_name"].ToString();
                lblBirthDate.Text = string.Format("{0:dd/MM/yyyy}", dr[0]["birth_date"]);//  .ToString("dd/MM/yyyy", new CultureInfo("th-TH"));
                lblCitizen.Text = dr[0]["citizen"].ToString();
            }
        }

        protected void btnFindPos_Click(object sender, ImageClickEventArgs e)
        {
            string st = HideOldPos.Value;
            if (st == "")
                return;

            RecruitNewEmployeeBLL eBLL = new RecruitNewEmployeeBLL();
            PositionInfo posInfo = new PositionInfo();
            IList<PositionInfo> infoList = eBLL.GetPositions(Int32.Parse(st));

            if (infoList.Count > 0)
            {
                posInfo = infoList[0];
                txtPosition.Text = posInfo.Name;
                txtPosRef.Text = posInfo.RefNo;
                posTypeCombo.SelectedValue = posInfo.PositionType.Sequence.ToString();
                bindClasscombo();
                jobSiteCombo.SelectedValue = posInfo.JobSite.Sequence.ToString(); 
            }
        }

        protected void btnFindPos_Load(object sender, EventArgs e)
        {
            btnFindPos.Attributes.Add("OnClick", "LinkMDdetail(" + HideOldPos.ClientID + "," + "'Forms/DialogRC_Pos.aspx','../frmIframe.html',700,500)");
        }

        protected void cmbTmpEdu_ItemsRequested(object o, Telerik.Web.UI.RadComboBoxItemsRequestedEventArgs e)
        {
            bindTmpEducateCombo();

        }

    }    
    
}